[求助]关于读写ds18b20时序的两个问题

来源:百度知道 编辑:UC知道 时间:2024/06/02 00:31:26
看了很多18b20的资料,越看越糊涂啦!请高手指点哦:
问题一(资料上以下两种不同的说法,描述的竟然相反,哪个才是对的啊?):
说法一:DS18B20的读时序
“对于DS18B20的读时序分为读0时序和读1时序两个过程。
对于DS18B20的读时隙是从主机把单总线拉低之后,在15微秒之内就得释放单总线,以让DS18B20把数据传输到单总线上。DS18B20在完成一个读时序过程,至少需要60us才能完成。”
说法二:DS18B20的读时序
“主机总线t0时刻从高拉至低电平时,总线只需保持低电平1us,之后在t1时刻将总线拉高,产生读时间隙,读时间隙在t1时刻后t2时刻前有效。t2距t0为15us,也就是说,t2时刻前主机必须完成读位,并在t0后的60us至120us内释放总线。”
以上两个说法完全矛盾呀!按照说法一,主机把单总线拉低时刻开始算,需要延迟15微秒之后才能读位;按照说法二,主机把单总线拉低时刻开始算,必须要在15us之内完成读位!
这两种说法必然有一种是错的啊,可是,哪一个说法才是对的呀?
问题二:
ds18b20的写1时序与读(0或1)时序完全相同,是不是在读取ds18b20一位的同时,无意中就向18b20写进去一个1了啊?

根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。